home *** CD-ROM | disk | FTP | other *** search
- (macro freeze (lambda (x)
- (cons 'lambda
- (cons nil (cdr x)))))
-
- (define (thaw x) (x))
-
- (macro delay (lambda (x)
- (list 'cons ''delayed-object
- (list 'lambda
- '() (cadr x)))))
-
- (define (force x)
- (if (eq? (car x) 'memoized-object)
- (cdr x)
- (sequence (set-cdr! x ((cdr x)))
- (set-car! x 'memoized-object)
- (cdr x))))
-
- (define (delayed-object? x)
- (if (pair? x)
- (or (eq? (car x) 'delayed-object)(eq? (car x) 'memoized-object))
- #f))
-
-